Docker Dokerfile创建SSH服务镜像
1 创建工作目录
- 首先,创建一个
sshd_centos
工作目录:
mkdir sshd_centos
ls
- 其中,创建Dockerfile和run.sh文件:
cd sshd_centos
touch Dockerfile run.sh
ls
2 编写 run.sh
脚本和 authorized_keys
文件
- 编辑
run.sh
脚本。
cd sshd_centos
vi run.sh
/usr/sbin/sshd -D
- 在宿主机上生成SSH秘钥对,并创建
authorized_keys
文件:
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub > authorized_keys
3 编写 Dockerfile
# 设置初始镜像
FROM centos:7.2.1511
MAINTAINER kingbase (kingbase@kingbase.com.cn)
# 下面开始运行更新命令
RUN yum install -y passwd openssh openssh-server net-tools
RUN mkdir -p /var/run/sshd
RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
RUN ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
RUN mkdir -p /root/.ssh
# 取消pam限制
RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
RUN echo "root" | passwd --stdin root
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh
# 开放端口
EXPOSE 22
CMD ["/run.sh"]
4 创建镜像
在 sshd_centos
目录下,使用 docker build
命令来创建镜像。
cd sshd_centos
docker build --no-cache -t sshd:latest .
5 测试镜像,运行容器
docker run -d -p 10000:22 sshd:latest /run.sh
docker ps
6 连接容器的SSH服务
在宿主主机或其他主机上上,可以通过 SSH
访问 10000
端口来登录容器。
ssh root@192.168.10.235 -p 10000